/**
 * 
 */
package ca.csf.dfc.poo.bots;

import java.util.HashMap;
import java.util.Random;

import ca.csf.dfc.poo.env.Case;
import ca.csf.dfc.poo.env.Direction;
import ca.csf.dfc.poo.env.Environnement;
import ca.csf.dfc.poo.env.Position;

/**
 * Robot qui prend une décision aléatoire parmi toutes les décisions possibles.
 * 
 * @author Camille Besse
 *
 */
public class RobotRandom extends Robot
{
	
	/**
	 * Constructeur d'initialisation.
	 * Initialise un objet Robot aléatoire avec une position aléatoire.
	 * 
	 * @param p_Environnement
	 * @param p_r
	 */
	public RobotRandom(Environnement p_Environnement, Random p_r)
    {
        super(p_r, p_Environnement);
    }
	
    /**
     * Constructeur d'initialisation.
	 * Initialise un objet Robot aléatoire avec ula position donnée en paramètres.
     * 
     * @param p_position
     * @param p_r
     */
    public RobotRandom(Position p_position, Random p_r)
    {
        super(p_position, p_r);
    }

    /**
     * Redéfinition.
     * @see ca.csf.dfc.poo.bots.Robot#getImage()
     */
    @Override
    public String getImage()
    {
        // TODO Auto-generated method stub
        return null;
    }

    /**
     * Redéfinition.
     * @see ca.csf.dfc.poo.bots.Robot#decider(java.util.HashMap)
     */
    @Override
    public Direction decide(HashMap<Direction, Case> p_possibles)
    {
        Direction dirChoisie = null;
        
        if (p_possibles.size() == 0)
            return null;

        while (dirChoisie == null)
            switch (m_r.nextInt(4))
            {
                case 0:
                    if (p_possibles.containsKey(Direction.NORD)) dirChoisie = Direction.NORD;
                    break;
                case 1:
                    if (p_possibles.containsKey(Direction.SUD)) dirChoisie = Direction.SUD;
                    break;
                case 2:
                    if (p_possibles.containsKey(Direction.EST)) dirChoisie = Direction.EST;
                    break;
                default:
                    if (p_possibles.containsKey(Direction.OUEST)) dirChoisie = Direction.OUEST;
            }
        
        return dirChoisie;
    }

    /**
     * Redéfinition.
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString()
    {
        return "Random "+super.toString();
    }

}
